home *** CD-ROM | disk | FTP | other *** search
- SEQ formatted GEOS file V1.0
- LA-50
- PAGES
- BLASTER'S CONVERTER V2.5
- Write Image V1.1
- Red Storm
- geoWrite V1.1
- This file was created with
- Wrong is Write.
- Written by Joe Buckley.
- .if Pass1
- .include geosSym
- .include geosMac
- .endif
- .include LA50Const
- ProgStart:
- ; jump table
- ; pcheck,prline,prdone,prsize
- jmp pstart
- jmp prline
- jmp prdone
- jmp prsize
- jmp prntas
- jmp strtas
- jmp setnlq
- .byte "la-50",0
- popen:
- ; OPEN rs232 port
- jsr InitForIO
- LoadB $dd0d,$7f ; turn off timer int
- LoadW NMIVEC,nmirtn ; set nmi vector
- lda #$01 ; set file name
- ldx #<prname
- ldy #>prname
- jsr SETNAM
- lda #$02 ; set channel DataPntr
- ldy #$00
- jsr SETLFS
- jsr CBM_OPEN ; CBM_OPEN file
- ClrB $0296
- sta $029a
- LoadB $0295,$07
- LoadB $0299,$d6 ; 4800 bps
- MoveW WorkPntr,Work_Pntr
- LoadW ROBUF,RS_buffer
- ldx #$02 ; set output channel
- jsr CHKOUT
- lda $dd0d ; ???
- pclose:
- ; CLOSE rs232 port
- ldx #$08 ; wait 2.048 sec
- lda flag
- bne 1$
- ldx #$01 ; wait .256 sec
- 1$ jsr DelayLoop
- jsr CLRCHN ; clr output chan
- lda #$02 ; CLOSE it
- jsr CLOSE
- jmp DoneWithIO ; CLOSE serial comm
- pstart:
- ClrB count
- ldx #$00
- prsize:
- ; return page size
- ldx #80 ; 90 lines/80 cols
- ldy #90
- lda #00
- prdone:
- lda
- ASCII
- beq 1$
- PushW r1
- PushB r0L
- sta r1L
- PushB r0H
- sta r1H
- LoadW r0,640
- jsr ClearRam
- PopB r0H
- PopB r0L
- PopW r1
- jsr prline
- 1$ jsr popen
- lda #$0c ; Form Feed
- jsr CHROUT
- jmp pclose
- prline:
- LoadB ASCII,<TRUE
- jsr popen
- lda count
- bne 1$
- jmp line1
- 1$ cmp #$01
- bne 2$
- jmp line2
- 2$ jmp line3
- Print_Buffer:
- MoveW Work_Pntr,WorkPntr
- inc WorkPntr+1
- ldy #$df
- 1$ lda (WorkPntr),y
- bne 3$
- bne 1$
- lda (WorkPntr),y
- bne 3$
- dec WorkPntr+1
- 2$ lda (WorkPntr),y
- bne 3$
- bne 2$
- lda (WorkPntr),y
- 3$ sta flag
- bne OK_Print_Buffer
- OK_Print_Buffer:
- MoveW Work_Pntr,WorkPntr
- LoadB NumCards,$4f
- 1$ LoadB Bits2Roll,$08
- ldy #$05
- 2$ MoveB "(WorkPntr),y","Data2Roll,y"
- bpl 2$
- 3$ ldx #$05
- lda #$00
- 4$ rol Data2Roll,x
- rol a
- bpl 4$
- add #$3f
- jsr CHROUT
- jsr CHROUT
- dec Bits2Roll
- bne 3$
- jsr
- IncWorkPntr
- jsr
- IncWorkPntr
- jsr
- IncWorkPntr
- dec NumCards
- bpl 1$
- IncDataPntr:
- AddVW $08,DataPntr
- IncWorkPntr:
- AddVW $02,WorkPntr
- IncPntr1:
- AddVW $02,Pointer1
- IncPntr2:
- AddVW $04,Pointer2
- grafix:
- LoadW r15,grmode
- jmp SendString ; enter graphic mode
- groff:
- LoadW r15,exit
- jmp SendString ; exit graphic mode
- doasci:
- LoadW r15,asctxt
- jmp SendString ; enter/exit ascii
- donlq:
- LoadW r15,nlqtxt
- SendString:
- ldy #$00
- 1$ lda (r15),y
- beq 2$
- jsr CHROUT
- bne 1$
- 2$ rts
- line1:
- LoadW Pointer1,store1-$06
- jsr grafix
- ldx #$4f
- 1$ ldy #$05
- 2$ MoveB "(DataPntr),y","(WorkPntr),y"
- bpl 2$
- ldy #$06
- MoveB "(DataPntr),y","(Pointer1),y"
- MoveB "(DataPntr),y","(Pointer1),y"
- jsr IncPntr1 ; inc Pointer1 by 2
- jsr IncDataPntr ; inc DataPntr by 8
- jsr IncWorkPntr ; inc WorkPntr by 6
- jsr IncWorkPntr ; (3 lines)
- jsr IncWorkPntr
- bpl 1$
- jsr Print_Buffer
- jsr groff
- inc count
- jmp pclose ; close then rts
- line2:
- LoadW Pointer1,store1
- LoadW Pointer2,store2-$04
- jsr grafix
- ldx #$4f
- 1$ ldy #$00
- MoveB "(Pointer1),y","(WorkPntr),y"
- MoveB "(Pointer1),y","(WorkPntr),y"
- jsr IncPntr1 ; inc Pointer1 by 2
- jsr IncWorkPntr ; inc WorkPntr by 2
- ldy #$03
- 2$ MoveB "(DataPntr),y","(WorkPntr),y"
- bpl 2$
- ldy #$07
- 3$ MoveB "(DataPntr),y","(Pointer2),y"
- cpy #$04
- bpl 3$
- jsr IncWorkPntr ; inc WorkPntr by 4
- jsr IncWorkPntr ; (2 lines)
- jsr IncPntr2 ; inc Pointer2 by 4
- jsr IncDataPntr ; inc DataPntr by 8
- bpl 1$
- jsr Print_Buffer
- jsr groff
- inc count
- jmp pclose ; close then rts
- line3:
- LoadW Pointer1,store1
- LoadW Pointer2,store2
- MoveW DataPntr,Data_Pntr
- jsr grafix
- ldx #$4f
- 1$ ldy #$03
- 2$ MoveB "(Pointer2),y","(WorkPntr),y"
- bpl 2$
- jsr IncPntr2 ; inc Pointer2 by 4
- jsr IncWorkPntr ; inc WorkPntr by 4
- jsr IncWorkPntr ; (2 lines)
- ldy #$00
- MoveB "(DataPntr),y","(WorkPntr),y"
- MoveB "(DataPntr),y","(WorkPntr),y"
- jsr IncDataPntr ; inc DataPntr by 8
- jsr IncWorkPntr ; inc WorkPntr by 2
- bpl 1$
- jsr Print_Buffer
- jsr groff
- jsr pclose
- line3b:
- jsr popen
- lda Data_Pntr
- add #$02
- sta DataPntr
- lda Data_Pntr+1
- adc #$00
- sta DataPntr+1
- MoveW Work_Pntr,WorkPntr
- jsr grafix
- ldx #$4f
- 1$ ldy #$05
- 2$ MoveB "(DataPntr),y","(WorkPntr),y"
- bpl 2$
- jsr IncDataPntr ; inc DataPntr by 8
- jsr IncWorkPntr ; inc WorkPntr by 6
- jsr IncWorkPntr ; (3 lines)
- jsr IncWorkPntr
- bpl 1$
- jsr Print_Buffer
- jsr groff
- ClrB count
- jmp pclose ; close then rts
- prntas:
- ClrB ASCII
- jsr popen
- jsr doasci
- lda nlq
- beq 1$
- jsr donlq
- 1$ ldy #$00
- lda (DataPntr),y
- beq 3$
- cmp #$0d
- bne 2$
- lda #$0a
- jsr CHROUT ; send linefeed
- 2$ jsr CHROUT ; send char
- IncW DataPntr
- bra 1$
- 3$ jsr doasci
- ldx #$08
- lda nlq
- bne 4$
- ldx #$04
- 4$ jsr DelayLoop
- jmp pclose ; close then rts
- DelayLoop:
- ldy #$00
- 1$ jsr $eeb3 ; Wait
- bne 1$
- bne 1$
- setnlq:
- LoadB nlq,$01
- strtas:
- ClrB nlq
- sta flag
- nlq: .byte $00
- flag: .byte $00
- count: .byte $00
- ASCII
- : .byte $00
- prname: .byte 10 ; 2400 baud
- grmode: .byte 27,80,113,33,56,48,63,0
- nlqtxt: .byte 27,91,49,119,27,91,50,34,122,0
- asctxt: .byte 27,91,49,119,27,91,49,34,122,0
- exit: .byte 45,27,92,0
- RS_buffer: .block 256 ; 256 byte RS-232 buffer
- store1: .block 160
- store2: .block 320
- ProgEnd:
- TIME, DATE Page PAGE
-